package models

//定义请求的参数结构体

const (
	OrderTime  = "time"
	OrderScore = "score"
)

// ParamSignUp 注册请求参数
type ParamSignUp struct {
	Username   string `json:"username" binding:"required"` //tag用空格分开 该字段是有需要的
	Password   string `json:"password" binding:"required"` // gin 框架中用于参数效验的tag: binding
	RePassword string `json:"re_password" binding:"required,eqfield=Password"`
}

// ParamLogin 登录请求参数
type ParamLogin struct {
	Username string `json:"username" binding:"required"` //tag用空格分开 该字段是有需要的
	Password string `json:"password" binding:"required"` // gin 框架中用于参数效验的tag: binding
}

// 投票数据
type ParamVoteDate struct {
	//UserID 从登录用户中取
	PostID    int64 `json:"post_id,string" binding:"required"`         //帖子id
	Direction *int  `json:"direction" binding:"required,oneof=1 0 -1"` // 赞成(1)反对(-1)取消投票(0)
	//oneof只能是后面其中一个 validator库在
	//方法一：将 int 类型改为 *int 类型，使其区分零值和未提供的值。方法二：去掉 binding:"required" 标签，并手动验证字段的值。
}

//ParamPostList 获取帖子列表 query string 参数
type ParamPostList struct {
	Page        int64  `form:"page" json:"page"`   // 页码
	Size        int64  `form:"size" json:"size"`   // 每页数据量
	Order       string `form:"order" json:"order"` // 排序依据
	CommunityID int64  `form:"cid" json:"cid"`     //可以为空 ,用于获取单个社区帖子
}

//ParamCommunityPostList 获取某个社区帖子列表 query string 参数
type ParamCommunityPostList struct {
	*ParamPostList
	CommunityID int64 `form:"cid"`
}
